package com.berchen.offer;

import com.berchen.test.ListNode;

/**
 *  链表 3 4 5
 *  链表 9 8 7 2
 *  输出链表： 2 3 3 3 （543+2789）
 */
public class Test20 {

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode root=null;
        ListNode rootTemp=null;

        int temp=0;
        while (l1!=null&&l2!=null){

            int num=l1.val+l2.val+temp;
            temp=0;
            if(num>=10){
                num=num-10;
                temp=1;
            }

            if(root==null){
                root=new ListNode(num);
                rootTemp=root;
            }else {
                rootTemp.next=new ListNode(num);
                rootTemp=rootTemp.next;
            }
            l1=l1.next;
            l2=l2.next;
        }
        while (l1!=null){

            int num=l1.val+temp;
            temp=0;
            if(num>=10){
                num=num-10;
                temp=1;
            }
            if(root==null){
                root=new ListNode(num);
                rootTemp=root;
            }else {
                rootTemp.next=new ListNode(num);
                rootTemp=rootTemp.next;
            }
            l1=l1.next;
        }
        while (l2!=null){
            int num=l2.val+temp;
            temp=0;
            if(num>=10){
                num=num-10;
                temp=1;
            }
            if(root==null){
                root=new ListNode(num);
                rootTemp=root;
            }else {
                rootTemp.next=new ListNode(num);
                rootTemp=rootTemp.next;
            }
            l2=l2.next;
        }
        if(temp==1){
            rootTemp.next=new ListNode(1);
        }
        return root;

    }
}
